# -*- coding: utf-8 -*-
# @Time    : 2022/1/1 13:48
# @Author  : TangDagui
# @Email   : 3297364807@qq.com
# @File    : FourTask.py
# @Software: PyCharm
# 哈姆雷特英文词频统计：输出出现次数最多的10个单词及其词频要求：1.替换特殊字符；2.不区分大小写
import re

txtData = open("hamlet.txt", "r").read()
text = re.sub(r'\W+', ' ', txtData)  # 正则表达式 \W匹配非字母数字及下划线  +匹配多次
words = text.split()
counts = {}  # 定义列表
for word in words:
    counts[word] = counts.get(word, 0) + 1  # 如果值不存在字典就返回default值  default已指定为0
items = list(counts.items())  # 集合转换为list
items.sort(key=lambda x: x[1], reverse=True)  # key=函数输入是x,输出的值是x[1]   reverse=True降序 =False升序

for i in items[0:10]:
    print("{0:<10}{1:>15}".format(i[0], i[1]))  # <10表示左对齐，并占10个位置，>5表示右对齐，占5个位置
